package com.cj.dao.impl;

import com.cj.dao.BaseDao;
import com.cj.utils.DBUtils;

import java.sql.*;

/**
 * 数据持久层的父接口
 * 主要用来操作数据库
 */
public class BaseDaoImpl implements BaseDao {
    //创建连接数据库工具类
    private DBUtils dbUtils = new DBUtils();


    //根据参数sql查询对应数据，将结果集（ResultSet）进行返回 的方法
    @Override
    public ResultSet query(String sql) {
        Connection conn = dbUtils.getConnection();
        Statement st = null;
        ResultSet rst = null;
        try {
            st = conn.createStatement();
            //返回查询的结果集
            rst = st.executeQuery(sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return rst;
    }

    /**
     * 执行增加、删除、修改的方法
     * @param sql
     * @param obj
     * @return 1:执行成功   0：执行失败
     */
    @Override
    public int executeUpdate(String sql, Object[] obj) {
        Connection conn = dbUtils.getConnection();
        PreparedStatement pst = null;
        int result = 0;
        try {
            pst = conn.prepareStatement(sql);
            // 对 参数 Object[] obj 进行遍历
            for(int i = 0; i < obj.length; i++){
                pst.setObject((i + 1), obj[i]);
            }
            //执行sql操作，并返回结果状态码
            result = pst.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            dbUtils.closeConn();
        }
        return result;
    }

    @Override
    public void closeConn() {
        dbUtils.closeConn();
    }


}
